// import { testSort, measureSort } from "hy-algokit";
import { testSort, measureSort } from "./utils";

// 冒泡排序
// 1. 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
// 2. 对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
// 3. 针对所有的元素重复以上的步骤，除了最后一个。
// 4. 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
export default function bubbleSort<T>(arr: T[]): T[] {
  const n = arr.length;

  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        const temp = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = temp;
      }
    }
  }

  return arr;
}

// const arr = [23, 44, 9, 1, 5, 2, 23, 43, 12, 43, 3, 4];
// console.log(bubbleSort(arr));
// testSort(bubbleSort);
measureSort(bubbleSort);
export {};
